home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / epistat.arc / T-TEST.BAS (.txt) < prev   
Encoding:
GW-BASIC  |  1983-08-10  |  3.3 KB  |  64 lines

  1. 1  REM                STUDENT'S T-TEST (two-tailed)
  2. 2  REM             Written by Tracy L. Gustafson, M.D.
  3. 3  REM            Round Rock, Texas. Version 2.0, 1982
  4. 5  CLEAR: OPTION BASE 1: DEFINT A-C,N,T,Z: DEFSTR D
  5. 8  SCREEN 0: WIDTH 80: COLOR 7,0,1: CLS: KEY OFF
  6. 10  DEF SEG=&H40
  7. 11  A=PEEK(&H17): IF NOT(A AND &H20) THEN POKE &H17,(A AND (NOT &H20)) OR &H20
  8. 12  DEF SEG
  9. 15  PRINT TAB(20);"KEY";STRING$(31,205);"CLOSE"
  10. 16  PRINT TAB(20);"OPEN STUDENT'S T-TEST (two-tailed) OPEN"
  11. 18  PRINT TAB(20);"SCREEN";STRING$(31,205);"LOAD"
  12. 20  AP=CSRLIN: PRINT TAB(10);"What is the name of the DATAFILE you wish to analyze?"
  13. 25  PRINT TAB(7);"(Press RETURN if you wish to skip directly to T evaluation)"
  14. 30  LOCATE AP,67: INPUT "",FILE$: ON ERROR GOTO 450
  15. 35  IF FILE$<>"" THEN 50 ELSE AF=1
  16. 40  PRINT: PRINT :PRINT TAB(10);:INPUT;"Enter T value:  ",ST: ST=ABS(ST)
  17. 45  PRINT TAB(39);:INPUT "degrees of freedom:  ",ADF: GOTO 220
  18. 50  AF=0: OPEN FILE$ FOR INPUT AS #1: INPUT #1,A,C
  19. 60  DIM D(A,C),CS(A,C),N$(A),X(A),X2(A),T(A),SD(A),MD(A)
  20. 70  FOR T=1 TO A: INPUT #1, T(T): NEXT
  21. 80  FOR T=1 TO A: FOR Z=1 TO C: INPUT #1, D(T,Z): NEXT: NEXT
  22. 90  FOR T=1 TO A: FOR Z=1 TO T(T): INPUT #1, CS(T,Z): NEXT: NEXT
  23. 100  FOR T=1 TO A: INPUT #1, N$(T),X(T),X2(T),MD(T),SD(T): NEXT: CLOSE #1
  24. 105  PRINT: PRINT: PRINT TAB(5);"What are the SAMPLE NUMBERS of the 2 groups you want to compare?": PRINT TAB(10);
  25. 107  PRINT TAB(10);: INPUT; "Sample #:  ",NS1: IF NS1>A THEN GOSUB 110: GOTO 107 ELSE PRINT "  `";N$(NS1);"'";
  26. 108  PRINT TAB(45);: INPUT; "Sample #:  ",NS2: IF NS2>A THEN GOSUB 110: GOTO 108 ELSE PRINT "  `";N$(NS2);"'": GOTO 112
  27. 110  BEEP: PRINT TAB(20);FILE$;" has only";A;"samples.": RETURN
  28. 112  PRINT TAB(2);"Means = ";TAB(22);X(NS1)/T(NS1);TAB(57);X(NS2)/T(NS2)
  29. 115  PRINT:PRINT TAB(10);"Are these INDEPENDENT or PAIRED samples? (I or P)   ";
  30. 120  INPUT"", A$: IF A$="I" OR A$="i" THEN 180 ELSE IF A$="P" OR A$="p" THEN 130 ELSE 120
  31. 130  IF T(NS1)<>T(NS2) THEN BEEP: PRINT : PRINT "These 2 samples do not have the same number of elements---":PRINT TAB(37);"a paired T-TEST cannot be performed.": GOTO 420
  32. 140  XD=0: XD2=0: N=T(NS1): ADF=N-1
  33. 150  FOR Z=1 TO N: ED=VAL(D(NS1,Z))-VAL(D(NS2,Z)): XD=XD+ED: XD2=XD2+ED*ED: NEXT
  34. 160  VD=(XD2-XD*XD/N)/ADF: ST=ABS(XD/N)*SQR(N)/SQR(VD): GOTO 210
  35. 180  N1=T(NS1): N2=T(NS2): ADF=N1+N2-2
  36. 190  V1=((X2(NS1)-X(NS1)*X(NS1)/N1)+(X2(NS2)-X(NS2)*X(NS2)/N2))/ADF
  37. 200  V1=V1*(1/N1+1/N2): ST=ABS(X(NS1)/N1-X(NS2)/N2)/SQR(V1)
  38. 210  PRINT :PRINT :PRINT TAB(15);"T = ";ST;TAB(45);"df = ";ADF
  39. 220  R=ATN(ST/SQR(ADF)): RC=COS(R): X=1: R2=RC*RC: RS=SIN(R)
  40. 230  IF ADF MOD 2=0 THEN 310
  41. 240  IF ADF=1 THEN Y=R: GOTO 300
  42. 250  Y=RC: FOR Z=3 TO (ADF-2) STEP 2: X=X*R2*(Z-1)/Z: Y=Y+X*RC: NEXT
  43. 290  Y=R+RS*Y
  44. 300  P=1-Y*0.63662: GOTO 370
  45. 310  Y=1: FOR Z=2 TO (ADF-2) STEP 2: X=X*R2*(Z-1)/Z: Y=Y+X: NEXT
  46. 350  P=1-Y*RS
  47. 370  PLAY "MB O3 L32 MS DF#A O4 DF#A O5 L8 D"
  48. 380  PRINT:PRINT TAB(28);"p = ";:IF P<9.99E-07 THEN PRINT"< 10 (-6)" ELSE PRINT P
  49. 382  IF AF=1 THEN 422 ELSE COLOR 0,7
  50. 385  PRINT:PRINT TAB(8);"The MEANS of these 2 samples are ";:IF P>0.05 THEN PRINT "NOT ";
  51. 390  PRINT "significantly different.       ": COLOR 7,0
  52. 395  PRINT :PRINT "The confidence limits on the DIFFERENCE between the means of these samples":PRINT "can be calculated as: ": PRINT TAB(25);
  53. 400  ADF$=STR$(ADF): ADF$=RIGHT$(ADF$,LEN(ADF$)-1): IF A$="i" OR A$="I" THEN 415
  54. 410  YD=ABS(XD/N): PRINT YD; "+/- T(";ADF$;") * ";SQR(VD/N): GOTO 420
  55. 415  YD=ABS(X(NS1)/N1-X(NS2)/N2): PRINT YD;"+/- T(";ADF$;") * ";SQR(V1)
  56. 420  PRINT: PRINT TAB(4);"Do you want perform another T-TEST using this database? (Y or N)  ";: GOTO 430
  57. 422  PRINT: PRINT TAB(10);"Do you want to evaluate another T value? (Y or N)  ";
  58. 430  INPUT"",A$: IF A$="Y" OR A$="y" THEN CLS: IF AF=1 THEN 40 ELSE 105
  59. 440  END
  60. 450  BEEP: PRINT: IF ERL=50 AND ERR=53 THEN PRINT TAB(13); "I cannot find a file by that name on drive "; ELSE 500
  61. 460  IF MID$(FILE$,2,1)=":" THEN DR$=LEFT$(FILE$,2) ELSE DR$="A:"
  62. 470  PRINT DR$: PRINT "Your files are:": FILES DR$+"*.*": RESUME 20
  63. 500  ON ERROR GOTO 0
  64.